home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / lisp / gcl.rea < prev    next >
Encoding:
Text File  |  1996-11-16  |  9.9 KB  |  311 lines

  1. Description of GCL (GNU Common Lisp) system.
  2.  
  3. OVERVIEW:
  4.  
  5. The GCL system contains C and Lisp source files to build a Common Lisp
  6. sytem.  The original KCL system was written by Taiichi Yuasa and
  7. Masami Hagiya in 1984.  The AKCL system work was begun in 1987 by
  8. William Schelter and continued through 1994.  A number of people have
  9. contributed ports and pieces.  The file doc/contributors lists some of
  10. these.  In 1994 AKCL was released as GCL (GNU Common Lisp) under the
  11. GNU public library license.  Version akcl-1-624 was the last version
  12. made under the old license and using the old file change mechanism.
  13. This readme only applies to versions gcl.1.0 and later.  The GNU
  14. library license does allow redistribution of executables containing
  15. GCL as well as proprietary code, but such redistribution must be
  16. accompanied by sufficient material (eg .o files) to allow recipients
  17. to rebuild an executable, after possibly modifying GCL.  See the GNU
  18. file COPYING.LIB-2.0 for a full description of your right to copy this
  19. software.
  20.  
  21.  
  22.  
  23. OBTAINING SOURCES:
  24. -----------------
  25.  
  26. * There are source files on math.utexas.edu:pub/gcl/gcl.x.x.tgz You
  27. probably want the highest XX version number.  For example gcl-1.0.tgz
  28. would allow you to build the version 1.0 of GCL.  In the following
  29. this compressed tar file is simply referred to as gcl.tgz.  An
  30. alternate source for these files is ftp.cli.com:pub/gcl/gcl-XX.tgz If you
  31. do not have gzip it is available in the directory
  32. /anyonymous@prep.ai.mit.edu:/u2/emacs .
  33. GCL will also be available on prep.ai.mit.edu
  34.                    
  35.  
  36. MAKING THE SYSTEM:
  37. ==================
  38. To make the whole system, if you have obtained gcl.tgz. 
  39.  
  40. UNCOMPRESS and UNTAR the SOURCES:
  41. --------------------------------
  42.  
  43. Change to a directory in which you wish to put gcl, eg /usr/local,
  44. which we shall call PREFIX-DIR.
  45. Copy the file gcl.tgz to the PREFIX-DIR.
  46.  
  47. % gzip -dc gcl.tgz | tar  xvf -
  48.  
  49. This will create the directory ${PREFIX-DIR}/gcl-1.xxx with
  50. all the sources in it
  51.  
  52.  
  53.       
  54. ADD MACHINE DEFINITIONS TO MAKEFILES:
  55. ------------------------------------
  56.  
  57. Determine the NAME of your machine by looking in the MACHINES file (e.g.
  58. sun3-os4).
  59.  
  60.         % cd gcl-1.xxx 
  61.     % add-defs sun3-os4 
  62.  
  63.     You should finally be ready to go!
  64.  
  65. RUNNING MAKE:
  66. ------------
  67.  
  68.     % make
  69.  
  70. The make should continue without error.   There may be occasional
  71. warnings from the C compiler, but all files should compile successfully
  72. producing .o files.
  73.  
  74. At the end you should see a message at the end "Make of GCL xxx
  75. completed", where xxx stands for the version number.
  76.  
  77. TRY IT OUT:
  78. ----------
  79.  
  80. When it has finally finished you may invoke GCL by using
  81.  
  82. % xbin/gcl
  83. GCL (GNU Common Lisp)  Version(1.0)  Apr 21 00:52:31 CDT 1994
  84. Contains Enhancements by W. Schelter
  85. >(+ 2 3)
  86.  
  87. >5
  88.  
  89.  
  90.  
  91. INSTALLING:
  92. ----------
  93.     To install under /usr/local do
  94.  
  95.         make install
  96.  
  97.     To specify an alternative directory such as /lusr
  98.        do 
  99.  
  100.     make install PREFIX_DIR=/lusr
  101.  
  102.     The default installation puts a full executable in
  103.  
  104.         /usr/local/lib/gcl-version/unixport/saved_gcl
  105.  
  106.     and some doc in
  107.           
  108.           /usr/local/lib/gcl-version/doc/
  109.  
  110.     and some autoloading files in
  111.  
  112.       /usr/local/lib/gcl-version/lsp
  113.  
  114.         and a shell script in /usr/local/lib/gcl-version/xbin/gcl
  115.     This script is also copied to
  116.  
  117.     /usr/local/bin
  118.  
  119. FUTURE DIRECTIONS
  120. (and how you may be able to help)   Volunteers should contact
  121. William Schelter (wfs@math.utexas.edu)
  122.  
  123. a) Upgrading to comply with the forthcoming ANSI standard.   Work 
  124. needs to be done.   
  125.  
  126. b) Need work on providing a high level window interface.   One possible
  127. way would be a good connection with TCL/TK.   Another would be to go
  128. in the direction of CLIM.   
  129.  
  130. A new compiler has been written, which is closer to the ANSI standard
  131. and provides some other benefits.   It will be in a future release.
  132. We will need people willing to beta test and isolate any bugs.
  133.  
  134. Additonal work planned or desired:
  135.  
  136.   * Clean up distribution and installation.  Make it easier to link in
  137. C code such as Novak's window stuff.   Faslink is not portable (since
  138. many systems don't support ld -A).
  139.  
  140.   * Introduce COMMON-LISP and COMMON-LISP-USER packages as per ANSI
  141. standard, change the package functions to behave as in the ANSI
  142. standard.  Any other changes which people can identify which would
  143. make life easier, and are compatible with ANSI.
  144.  
  145.   * Introduce C level and Lisp level way of signalling errors of the
  146. types specified by the ANSI standard.  Make it so that when the CLOS
  147. is present these become error objects.
  148.  
  149.   * Fix the run-process stuff to properly deallocate processes and
  150. have listen do the right thing, by using select, which is POSIX.  Try
  151. to make it compatible with the one in Allegro or Lucid.
  152.  
  153.   * Turn ANSI documentation into the new Lisp's on-line documentation.
  154. This will be useful for development and for users.  No sense in basing
  155. our work on the CLTL 2.  Must go to the ANSI document itself.
  156.  
  157.   * Make an appropriate Unix man page.
  158.  
  159.   * Add my allocation files and other changes necessary to make
  160. INTERRUPTS safe.  This probably means adding in all the C files which
  161. I have already written.
  162.  
  163.   * Change function calls to all refer to C stack and pass return
  164. values in a uniform way, the way the new compiler does it.  This will
  165. greatly improve funcalling, since right now there are generally two
  166. types of functions which can be expected, and they expect their
  167. arguments in different places.
  168.  
  169.   * Change to the new compiler which does things better from the ANSI
  170. point of view, and is smaller, and makes all function calls go via the
  171. C stack.
  172.  
  173.   * Include CLOS support.  Possibly take this from PCL or from
  174. Attardi, who has written some.
  175.  
  176.   * Include a windowing interface with TCL/TK which is capable of
  177. producing TK (similar to Motif but public) style windows and
  178. scrollable menus, etc.  This implementation must be done in such a way
  179. that it works in at least one additional Lisp, such as Allegro or
  180. Lucid.
  181.  
  182.   * Loop package: either make sloop satisfy the standard or include
  183. another implementation.
  184.  
  185.   * Changes to READ for ANSI, (including case sensitivity, etc.).
  186.  
  187.   * Byte compiler based on first pass of the new compiler.  Ideally
  188. provides very small code and extremely rapid compiling for general
  189. platform.  Notes: I have put the interrupt and run-process stuff early
  190. on since it is necessary for window development.
  191.  
  192.   * Construct a Common Lisp test suite to help debug new releases.
  193.  
  194. DOCUMENTATION:
  195. ==============
  196.    If you use GNU emacs, a convenient method for viewing documentation
  197. of Common Lisp functions (or functions in an extended system), is
  198. provided by the doc/find-doc.el file.  This will be installed when you
  199. do make in the doc directory.  Adding the following to your .emacs
  200. file will allow you to use C-h d to find documentation.
  201.  
  202. (autoload 'find-doc "find-doc" nil t)
  203. (global-set-key "d" 'find-doc)
  204. (visit-doc-file "/usr/local/lib/gcl/doc/DOC")
  205.  
  206. See the file find-doc.el for more information.
  207. Otherwise you may use the describe command inside Lisp.
  208. For example (describe 'print) will print out information about
  209. print.   You may also peruse the file doc/DOC.
  210.  
  211.  
  212. TROUBLE SHOOTING (some common problems reported):
  213. ----------------   
  214.  
  215. 1) Did you extract the files with the original write dates--make
  216. depends heavily on this?
  217.  
  218. 2) Did you use -O on a compiler which puts out bad code?  Any time you
  219. change the settings or use a new c compiler this is a tricky point.
  220.  
  221. 3) If you can't save an image, try doing so on the file server rather
  222. than a client.
  223.  
  224. 4) Doing the make on a client with the main files on a server, has
  225. sometimes caused random breakage.  The large temp files used by the C
  226. compiler seem to sometimes get transferred incorrectly.  Solution: use
  227. the server for the compile.
  228.  
  229. 5) Did you make changes in the .defs or .h files, other than just
  230. commenting out a CC=gcc line?
  231.  
  232. 6) Did you read the recommendations in the XXXX.defs file on what
  233. C compiler versions work?
  234.  
  235.  
  236. CHANGING THINGS: MAYBE EDIT TWO FILES:
  237. --------------------
  238.  
  239. Normally you should not need to edit ANY files.  There may be some
  240. parameter sizes you wish to change or if you don't have gcc where
  241. we have made that the default, then see CC below.
  242.  
  243.  
  244. EDIT the appropriate h/NAME.defs file.   These are definitions to
  245. be included in the various makefiles.
  246.  
  247. For example if the `NAME' of your machine is sun3-os4.
  248.  
  249. % emacs h/sun3-os4.defs
  250.  
  251.    * CC: set C compiler options.  For example, if you are using the GNU
  252.      C compiler:
  253.  
  254.      CC = gcc -msoft-float -DVOL=volatile -I$(GCLDIR)/o
  255.  
  256.          Or, if you are using the conventional UNIX C compiler:
  257.  
  258.      CC = cc -DVOL= -I. -I$(GCLDIR)/o
  259.      
  260.    * ODIR_DEBUG:
  261.      
  262.      ODIR_DEBUG= -g
  263.  
  264.      If you want files in the main c source compiled with debugging
  265.      information.   Note this is incompatible with OFLAGS= -O on
  266.      some compilers.   Size will be smaller without -g, but you
  267.      are then helpless in the face of problems.
  268.      
  269.    * INITFORM: The normal thing is to just have the one form
  270.      required for fast loading.
  271.  
  272.     INITFORM=(si::build-symbol-table)
  273.  
  274.  
  275. -----------
  276.  
  277. EDIT the file h/NAME.h  (eg h/sun3-os4.h)
  278.  
  279. (Actually you probably don't need to change it)
  280.  
  281. This file will be included by virtually every compilation of C
  282. files, except the translated C produced by kcl.
  283.  
  284. % emacs h/sun3-os4.h
  285.  
  286.       if you wish to change a parameter such as MAXPAGE 16384 established
  287.       in bsd.h (ie. number of 2000 byte pages you want as your absolute max
  288.       swap space).   MAXPAGE must be a power of 2.
  289.  
  290.       #undef MAXPAGE
  291.       #define MAXPAGE (2 * 16384)
  292.  
  293.       You may similarly redefine VSSIZE the maximum size for the value
  294.       stack (running very deep recursion interpreted may well require this).
  295.  
  296.  
  297.  
  298. DISCLAIMER:
  299. ----------
  300.  
  301. W. Schelter, the University of Texas, and other parties provide this
  302. program on an "as is" basis without warranty of any kind, either
  303. expressed or implied, including, but not limited to, the implied
  304. warranties of merchantability and fitness for a particular purpose.
  305.  
  306.  
  307. Bill Schelter 
  308. wfs@math.utexas.edu
  309.  
  310. See the file doc/contributors for a partial list of people who have
  311. made helpful contributions to ports etc.